package com.muyu.system.domain.model;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * 校验部门名称唯一性模型
 * @author dongzeliang
 * @version 1.0
 * @description: 校验部门名称唯一性模型
 * @date 2025/1/16 18:18
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class CheckDeptNameUniqueModel {

    /**
     * 部门名称
     */
    private String deptName;

    /**
     * 部门ID 若传入部门ID则排除此部门
     */
    private Long deptId;

    /**
     * 部门父级ID 传入父级ID则只校验子集ID
     */
    private Long parentDeptId;

    /**
     * 根据部门名称进行唯一性查询模型构建
     * @param deptName 部门名称
     * @return 唯一性查询模型
     */
    public static CheckDeptNameUniqueModel of(String deptName){
        return CheckDeptNameUniqueModel.builder()
                .deptName(deptName)
                .build();
    }

    /**
     * 根据部门名称进行唯一性查询模型构建
     * @param deptName 部门名称
     * @param deptId 部门ID
     * @return 唯一性查询模型
     */
    public static CheckDeptNameUniqueModel of(String deptName, Long deptId){
        return CheckDeptNameUniqueModel.builder()
                .deptName(deptName)
                .deptId(deptId)
                .build();
    }

    /**
     * 根据部门名称进行唯一性查询模型构建
     * @param deptName 部门名称
     * @param deptId 部门ID
     * @param parentDeptId 部门父级ID
     * @return 唯一性查询模型
     */
    public static CheckDeptNameUniqueModel of(String deptName, Long deptId, Long parentDeptId){
        return CheckDeptNameUniqueModel.builder()
                .deptName(deptName)
                .deptId(deptId)
                .parentDeptId(parentDeptId)
                .build();
    }
}
